Barva
Otázka od: delfi
10. 10. 2002 11:00
Hi,
nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)
fce Saturace (aBarva: TColor; aUroven: Integer): TColor;
Jmenuje se to spravne Saturace?
diky
ales
---
Odchozí zpráva neobsahuje viry.
Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
Verze: 6.0.399 / Virová báze: 226 - datum vydání: 9.10.2002
Odpovedá: ing. Jan Fiala
10. 10. 2002 18:20
Knihovna JCL obsahuje podobne funkce, ktere by ti mohly pomoci, treba
RGBToHSL. Unita JclGraphUtils
--
ing. Jan Fiala
mailto:jan.fiala@iol.cz
10.10.2002 delfi:
> Hi,
> nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)
> fce Saturace (aBarva: TColor; aUroven: Integer): TColor;
> Jmenuje se to spravne Saturace?
Odpovedá: Peter Surovy
10. 10. 2002 12:25
Ahoj
----- Original Message -----
From: "delfi" <delfi@pocitac.net>
Sent: Thursday, October 10, 2002 10:41 AM
> nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)
---nie je to az take jednoduche, ta saturacia o ktorej si
pisal to je jeden vektor v jednom z mnohych farebnych modelov konkr
sa jedna o HSL model. PC primarne skladuje farby
v RGB modeli na nacitanie poloziek mas API funkcie
GetBValue
GetGValue
GetRValue
posuvat a menit odtien by si potom mohol cca aj takto:
farba_R:=GetRValue(farba);
farba_G:=GetGValue(farba);
farba_B:=GetBValue(farba);
nova_farba_R:=farba_R+(cislo v ramci byte);
nova_farba_G:=farba_G+(cislo v ramci byte);
nova_farba_B:=farba_B+(cislo v ramci byte);
nova_farba:=RGB(nova_farba_R,nova_farba_G,nova_farba_B);
da sa pouzit aj alpha kanal (svetlost) ale iba pri bitmapach
s 32 bitmi na pixel;
PS
Odpovedá: Petr Vareka
10. 10. 2002 20:58
----- Original Message -----
From: "ing. Jan Fiala" <jan.fiala@iol.cz>
To: <delphi-l@clexpert.cz>
Sent: Thursday, October 10, 2002 12:19 PM
Subject: Re: Barva
> Knihovna JCL obsahuje podobne funkce, ktere by ti mohly pomoci, treba
> RGBToHSL. Unita JclGraphUtils
>
> --
> ing. Jan Fiala
> mailto:jan.fiala@iol.cz
>
> 10.10.2002 delfi:
> > Hi,
> > nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)
> > fce Saturace (aBarva: TColor; aUroven: Integer): TColor;
> > Jmenuje se to spravne Saturace?
Nevim presne, co myslis pod pojmem odstin. Pokud je to to, co myslim ja, pak
bych reseni mel.
Barva je vlastne trojmistne cislo v 256-kove soustave; cifra na miste
"jednotek" koduje mix cervene barvy,
cifra na miste "desitek" mix zelene a konecne "stovky" koduji modrou. Kazda
cifra nabyva hodnot 0-255.
Tedy: Barva = B * 256^2 + G * 256 + B. (^ znaci operator
umoci. 10^2=100)
Odtud:
B = Barva DIV (256^2) , (DIV znaci
podil zaokrouhleny na cele cislo)
G = (Barva - B * 256) DIV 256
R = Barva - B * 256^2 - G * 256.
S pozdravem Petr Vareka.
Odpovedá: Ondrej Kelle
14. 10. 2002 18:36
> nemate nekdo nejakou fci ktera z urcite barvy vrati odstin (0..100%)
Pozri si tiez unitu GraphUtil, su tam prevody RGB na HLS a spet.
HTH
TOndrej